Un assistant IA de programmation qui gnre du code comportant des faiblesses de scurit, selon une tude sur la qualit du code


Les outils modernes de gnration de code utilisent des modles d'IA, en particulier les grands modles linguistiques (LLM), pour gnrer du code fonctionnel et complet. Bien que ces outils deviennent populaires et largement disponibles pour les dveloppeurs, leur utilisation s'accompagne souvent de problmes de scurit, conduisant une fusion de code non scuris dans la base de code. Il est donc important dvaluer la qualit du code gnr, notamment en termes de scurit. Une tude s'est intresse au cas de GitHub Copilot.

Les outils de gnration de code visent gnrer automatiquement du code fonctionnel bas sur des invites, qui peuvent inclure des descriptions textuelles (commentaires), du code (tel que des signatures de fonction, des expressions, des noms de variables, etc.) ou une combinaison de texte et de code. Aprs avoir crit un code ou un commentaire initial, les dveloppeurs peuvent s'appuyer sur des outils de gnration de code pour complter le code restant.

Cette approche peut permettre de gagner du temps de dveloppement et acclrer le processus de dveloppement logiciel. Les outils de gnration de code automatiss ont toujours t un sujet de discussion actif en matire de recherche.

Certains des premiers travaux remontent aux annes 1960, lorsque Waldinger et Lee ont propos un synthtiseur de programmes appel PROW, qui gnrait automatiquement des programmes LISP bass sur des spcifications fournies par les utilisateurs sous la forme de calcul de prdicats.

mesure que les langages informatiques continuaient d'voluer, de plus en plus de langages de programmation ont commenc prendre en charge la mtaprogrammation, rendant la technologie de gnration de code automatise plus efficace et plus flexible. Ces dernires annes, le dveloppement rapide des technologies dintelligence artificielle, notamment sous la forme de modles dapprentissage automatique et dapprentissage profond, a acclr le dveloppement des technologies de gnration de code.

Les progrs rcents dans la gnration de code sont accompagns de lmergence des grands modles linguistiques (LLM). Les LLM sont des modles d'apprentissage en profondeur forms sur un vaste corpus de code/texte dot de puissantes capacits de comprhension du langage qui peuvent tre utilises pour des tches telles que la gnration de langage naturel, la classification de texte et les systmes de questions-rponses.

Par rapport aux mthodes d'apprentissage en profondeur prcdentes, les derniers dveloppements en matire de LLM, tels que les modles Generative Pre-trained Transformer (GPT), ont ouvert de nouvelles opportunits pour remdier aux limites de la technologie de gnration de code automatise existante.

Actuellement, les outils de gnration de code bass sur les LLM ont galement t largement appliqus, tels que Codex d'OpenAI, AlphaCode de DeepMind et CodeWhisperer d'Amazon.

Le cas de GitHub Copilot

Qu'est-ce que c'est ?

GitHub dcrit Copilot comme l'quivalent IA de la programmation en paire , dans laquelle deux dveloppeurs travaillent ensemble sur un seul ordinateur. L'ide est qu'un dveloppeur peut apporter de nouvelles ides ou reprer des problmes que l'autre dveloppeur aurait pu manquer, mme si cela ncessite plus d'heures de travail.

Dans la pratique, cependant, Copilot est plutt un outil utilitaire de gain de temps, qui intgre les ressources que les dveloppeurs devraient autrement chercher ailleurs. Lorsque les utilisateurs saisissent des donnes dans Copilot, l'outil leur suggre des extraits de code ajouter en cliquant sur un bouton. Ainsi, ils n'ont pas passer du temps chercher dans la documentation de l'API ou rechercher des exemples de code sur des sites spcialiss.

GitHub Copilot peut vous fournir des suggestions de code partir dun commentaire en langage naturel dcrivant ce que vous voulez que le code fasse. GitHub Copilot est disponible pour plusieurs langages et frameworks, tels que Python, JavaScript, TypeScript, Ruby, Go, Java, C#, HTML, CSS et SQL.

Du code non scuris

Dans l'tude intitule Security Weaknesses of Copilot Generated Code in GitHub, des chercheurs ont men une tude empirique en analysant les faiblesses de scurit dans les extraits de code gnrs par GitHub Copilot qui font partie de projets publics hbergs sur GitHub. Lobjectif est dinvestiguer les types de problmes de scurit et leur ampleur dans des scnarios rels (plutt que des scnarios labors).


cette fin, ils ont identifi 435 extraits de code gnrs par GitHub Copilot partir de projets accessibles au public. Ils ont ensuite effectu une analyse de scurit approfondie pour identifier les instances CWE (Common Weakness Enumeration) dans ces extraits de code.

Les rsultats montrent que :

  1. 35,8 % des extraits de code gnrs par Copilot contiennent des CWE, et que ces problmes sont rpartis dans plusieurs langages;
  2. les faiblesses de scurit sont diverses et lies 42 CWE diffrents, dans lesquels CWE-78 : Injection de commandes du systme d'exploitation , CWE-330 : Utilisation de valeurs insuffisamment alatoires et CWE-703 : Vrification ou gestion incorrecte de conditions exceptionnelles se sont produites le plus frquemment, et
  3. parmi les 42 CWE identifis, 11 d'entre eux appartiennent au Top-25 CWE 2022 actuellement reconnu.

Citation Envoy par chercheurs

Nos rsultats confirment que les dveloppeurs doivent tre prudents lorsqu'ils ajoutent du code gnr par Copilot (et des outils similaires de gnration de code d'IA) et doivent galement effectuer des contrles de scurit appropris lorsqu'ils acceptent le code suggr. Cela montre galement que les praticiens doivent dvelopper une conscience et des comptences en matire de scurit correspondantes.


Interprtation des rsultats

RQ1 : Dans quelle mesure le code gnr par Copilot est-il scuris ?

Parmi les 435 extraits de code gnrs par Copilot, nous avons constat que 35,8 % de ces extraits de code contiennent des failles de scurit. Ces faiblesses apparaissent dans les six langages de programmation les plus utiliss pris en charge par Copilot. De plus, lorsquil sagit de lapparition de problmes de scurit dans des extraits de code de diffrents langages de programmation, il est important de les analyser en fonction de la popularit de ces langages. Dans les extraits de code crits dans des langages comme Python et JavaScript, qui sont frquemment utiliss avec Copilot, le nombre de problmes de scurit peut tre lgrement plus lev. Cependant, globalement, la proportion de problmes de scurit dans ces six langues varie de 25 % 45 %, ne montrant pas de diffrence significative.

En outre, nous avons galement constat que les problmes CWE-502: Dsrialisation de donnes non fiables et CWE-400 : Consommation de ressources non contrle apparaissaient principalement dans des extraits de code crits en Python et JavaScript. Cela pourrait tre attribu certaines fonctionnalits qui rendaient leur code plus flexible, telles que le typage dynamique et l'interprtation dynamique. Par consquent, les dveloppeurs doivent accorder une attention particulire la scurit de leur code gnr par JavaScript et Python, en prenant les mesures appropries pour valider les donnes d'entre et grer efficacement les ressources afin de minimiser les risques de scurit. Les rsultats de RQ1 suggrent que dans la production pratique, bien que Copilot puisse aider les dveloppeurs crire du code plus rapidement et augmenter la productivit, des valuations de scurit et des correctifs supplmentaires sont galement ncessaires pour garantir que le code gnr n'introduit pas de risques de scurit potentiels.

QR2 : Quelles failles de scurit sont prsentes dans les extraits de code gnrs par GitHub Copilot ?

Aprs avoir effectu une valuation de scurit de 425 extraits de code gnrs par Copilot, un total de 600 failles de scurit ont t identifies, impliquant 42 types de CWE, soit environ 10 % des CWE (439 types de CWE) dans le dveloppement de logiciels. Cela peut tre d au fait que Copilot gnre du code dans diffrents langages de programmation et scnarios d'application, et qu'une grande varit de scnarios d'application peut conduire divers types de problmes de scurit. De plus, tant donn que le modle de base Copilot (Codex) est form sur des donnes accessibles au public qui contiennent potentiellement divers types de failles de scurit, cela peut conduire la prsence de plusieurs CWE dans le code gnr par Copilot. Cet ensemble de 42 types de CWE couvre de nombreux types de problmes de scurit, et le tableau 10 montre les types de problmes de scurit pour lesquels ces 42 CWE sont pertinents.


La diversit des failles de scurit indique que les dveloppeurs utilisant Copilot sont confronts divers risques de scurit. Ces risques sont divers et couvrent diffrents environnements de dveloppement et scnarios dapplication. Dans le mme temps, cela reflte galement le caractre invitable des failles de scurit dans le code gnr par Copilot. Les dveloppeurs doivent avoir une sensibilisation et des comptences en matire de scurit correspondantes et prendre des mesures de scurit appropries pour viter ces risques de manire opportune et cible. De plus, nous pouvons constater que les dveloppeurs rencontrent souvent CWE-78 : OS Command Injection, CWE-330 : Utilisation de valeurs insuffisamment alatoires et CWE-703 : Mauvaise vrification ou gestion des valeurs exceptionnelles.

Conclusion

Les chercheurs ont galement examin les causes possibles des faiblesses de scurit dans le code gnr par Copilot. Ils ont identifi trois facteurs principaux :

  • Le manque de contexte : Copilot gnre du code en se basant sur le commentaire ou le nom de la fonction, mais il ne prend pas en compte le contexte global du projet ou les exigences de scurit spcifiques. Par exemple, il peut gnrer du code qui utilise des fonctions obsoltes ou dangereuses, ou qui ne respecte pas les bonnes pratiques de codage.
  • La qualit des donnes dentranement : Copilot sentrane sur des milliards de lignes de code provenant de sources publiques, mais il ne filtre pas les donnes qui peuvent contenir des erreurs, des bugs ou des vulnrabilits. Par consquent, il peut reproduire les mmes problmes dans le code quil gnre.
  • Labsence de vrification : Copilot ne vrifie pas la validit, la fonctionnalit ou la scurit du code quil gnre. Il se contente de proposer des suggestions qui peuvent tre acceptes ou rejetes par les dveloppeurs. Il incombe donc aux dveloppeurs de tester et de rviser le code gnr avant de lintgrer leur projet.

Les chercheurs concluent que GitHub Copilot est un outil puissant et innovant qui peut aider les dveloppeurs crire du code plus rapidement et plus facilement, mais quil prsente galement des risques de scurit importants qui doivent tre pris en compte. Ils recommandent aux dveloppeurs dutiliser Copilot avec prudence et discernement, et de ne pas faire confiance aveuglment au code gnr. Ils suggrent galement aux concepteurs de Copilot damliorer la qualit des donnes dentranement, dajouter des mcanismes de vrification et de sensibilisation la scurit, et de fournir plus dinformations sur le fonctionnement interne et les limites de loutil .

Source : rapport

Et vous ?

Quelles sont les consquences potentielles des faiblesses de scurit dans le code gnr par Copilot pour les dveloppeurs et les utilisateurs ?
Quelles sont les responsabilits des dveloppeurs, des concepteurs de Copilot, pour assurer la scurit du code gnr par Copilot ?
Quelles sont les bonnes pratiques ou les outils que vous utilisez ou recommandez pour vrifier et amliorer la scurit du code gnr par Copilot ?
Quels sont les avantages et les inconvnients de lutilisation de Copilot par rapport dautres mthodes de programmation ?
Quelles sont vos attentes ou vos suggestions pour lvolution future de Copilot et des outils similaires de gnration de code bass sur lIA ?



Source
Catégorie article Sécurité

Ajouter un commentaire

Commentaires

Aucun commentaire n'a été posté pour l'instant.